<!DOCTYPE html>
<html lang="en">

  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>封装Promise</title>
  </head>

  <body>

  </body>
  <script>
    /* 
    Promise总结：
       一.promise：解决异步回调
       二.语法：
           2.1 创建promise实例对象，初始化promise的初始状态为pending
           2.2 执行异步回调：开启定时器，发送Ajax请求
           2.3 根据异步任务的结果去修改promise的状态：resolve(成功),rejected(失败)
           2.4 根据promise对象的结果调用then方法:该方法有两个回调函数
           2.5 成功的时候调用第一个函数，失败的时候调用第二个函数
    */
    let num = 0;

    function util(time) {
      num++;
      // 2.1 创建promise实例对象，初始化promise的初始状态为pending
      let promise = new Promise((resolve, reject) => {
        //2.2 执行异步回调：开启定时器，发送Ajax请求
        setTimeout(() => {
          resolve(`第${num}次异步任务`);
          // reject()
        }, time)
      })
      return promise
    }


    util(1000)
      .then((result) => {
        console.log(result + "成功");
        //执行第二次异步任务
        return util(2000)
      }, (error) => {
        console.log(error);
      })
      .then((result) => {
        console.log(result);
      }, (error) => {
        console.log(error);
      })
  </script>

</html>